package pe.edu.pucp.dp1.procesamiento.servidor;

import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.util.ArrayList;
import Shared.ServProc;
import pe.edu.pucp.dp1.procesamiento.controlador.GestorInterseccion;
import Shared.MatrizInterseccionSalida;

public class ServProcImpl extends UnicastRemoteObject implements ServProc {

    ServProcImpl() throws java.rmi.RemoteException {
        super();
    }

    public static GestorInterseccion gestorInter = GestorInterseccion.getInstance();

    
    public boolean iniProcesamiento() {
        gestorInter.iniSimIntersecciones();
        return true;
    }

    public int getNumZonasLargo() {
        return gestorInter.getnZonasLargo();
    }

    public int getNumZonasAlto() {
        return gestorInter.getnZonasAlto();
    }
    
    public MatrizInterseccionSalida obtInterPorCoord(int xCoord, int yCoord){
        return gestorInter.obtInterPorCoord(xCoord, yCoord);
    }
    
    public boolean iniHiloGenetico(){
        return gestorInter.iniHiloGenetico();
    }
    
    public boolean agregarSemaforo(int xCoord, int yCoord){
        return gestorInter.agregarSemaforo(xCoord,yCoord);
    }
    public boolean eliminarSemaforo(int xCoord, int yCoord){
        return gestorInter.eliminarSemaforo(xCoord,yCoord);
    }

    public static void main(String args[]) {

        System.setProperty("java.security.policy", "D:\\javafiles\\javapolicy\\java.policy");
        //System.setProperty("java.security.policy", "/home/javier/Escritorio/DP/javapolicy/java.policy");
        
        //System.setProperty("java.rmi.server.hostname", "192.168.1.213");
        try {
            ServProcImpl servProc;
            LocateRegistry.createRegistry(1099);
            servProc = new ServProcImpl();
            Naming.bind("ServProc", servProc);
            System.out.println("El servidor esta listo\n");
            
            gestorInter.iniSimIntersecciones();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
